6单选假定变量x的类型为long,对于变量y的初始化声明“inty=(int)x;”,其对应的汇编指
6单选假定变量x的类型为long,对于变量y的初始化声明“inty=(int)x;”,其对应的汇编指令不可能是()。

A.movslq%edx,%rax

B.movzlq%edx,%rax

C.movl%edx,%eax

D.movsql%rdx,%eax

7单选以下是C语言赋值语句“x=a*b+c;”对应的x86-64汇编代码:movslq%edx,%rdxmovsbl%sil,%esiimull%edi,%esimovslq%esi,%rsileaq(%rdx,%rsi),%rax已知x、a、b和c分别在RAX、RDI、RSI和RDX对应宽度的寄存器中,根据上述汇编指令序列,推测x、a、b和c的数据类型分别为()。

A.x—long,a—long,b—char,c—int

B.x—long,a—long,b—char,c—long

C.x—long,a—int,b—char,c—long

D.x—long,a—int,b—char,c—int

8单选假定long型变量t、int型变量x和short型变量y分别在RAX、RDI和RSI对应宽度寄存器中,C语言赋值语句“t=(long)(x+y);”对应的x86-64汇编指令序列不可能是()。

A.movswl%si,%edxaddl%edi,%edxmovslq%edx,%rax

B.movswq%si,%rdxleaq(%rdx,%rdi),%rax

C.movswq%si,%rsimovslq%edi,%rdileaq(%rsi,%rdi),%rax

D.movswq%si,%raxmovslq%edi,%rdxaddq%rdx,%rax

9单选以下关于x86-64过程调用的叙述中,错误的是()。

A.前6个参数采用通用寄存器传递,其余参数通过栈传递

B.返回参数存放在RAX相应宽度的寄存器中

C.在通用寄存器中传递的参数,都存放在64位寄存器中

D.在栈中的参数若是基本类型,则被分配8个字节空间

10单选以下关于IA-32和x86-64指令系统比较的叙述中,错误的是()。

A.对于入口参数,x86-64可用通用寄存器传递,而IA-32需用栈来传递

B.对于返回地址,x86-64使用通用寄存器保存,而IA-32使用栈来保存

C.对于浮点操作数,x86-64存于128位的XMM中,而IA-32存于80位的ST(i)中

D.对于64位数据,x86-64可用一条指令处理,而IA-32需多条指令处理

计算机系统基础(一):程序的表示、转换与链接

南京大学

军职在线答案

大学网课

«
»

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注